<template>
  <div>
    <!-- 搜索 -->
    <!-- 索赔申请 -->
    <TopFilter ref="TopFilterss" :list="topFilterInit" :cols="3" :collapse="collapse"  labelWidth="120" @filterChange="changeHandle"></TopFilter>
    <!-- table -->
    <FilterTable
      ref="table"
      selectionType="single"
      :columns="columns"
      :params="fetchParams"
      :dataSource="dataList"
      :fetchapi="fetchApi"
      :datakey="'records'"
      :onColumnsChange="columns => (this.columns = columns)"
      :onRowSelectChange="selectChange"
    >
    </FilterTable>
    <div
      :style="{
        position: 'absolute',
        left: 0,
        bottom: 0,
        right: 0,
        zIndex: 9,
        borderTop: '1px solid #e9e9e9',
        padding: '10px 20px',
        background: '#fff',
        textAlign: 'right'
      }"
    >
      <multiuse-button @click="closeDialog">关 闭</multiuse-button>
      <multiuse-button type="primary" :click="saveDialog.bind()">添加</multiuse-button>
    </div>
    <BaseDialog :visible.sync="visible" :title="'车型新增'" destroyOnClose :containerStyle="{height: 'calc(100% - 60px)', overflow: 'auto', paddingBottom: '60px'}">
      <vehicle @close="close" @save="save"></vehicle>
    </BaseDialog>

  </div>
</template>
<script>
  import { getSpList}  from '@/api/claim/factory/ClaimQueryFactory/index';
  import vehicle from "../../BasicData/ClaimApplication/vehicle";
  import { getPartType,getClaim } from '@/api/dictionary/index';
  import moment from "moment";
  import { getAppId } from '@/assets/js/auth';

  export default {
    //  mixins: [dictionary],
    components: {
      vehicle
    },
    data() {
      return {
        dataList: [],
        visible: false,
        visibleDrawer: false,
        collapse: false,
        infoId: null,
        topFilterInit: this.topFilterInitFun(),
        flterValue: {}, //参数
        fetchApi:getSpList,
        columns: this.creatHeader(),
        fetchParams: {
          // status:2
          xhrAbort: true
        }, //ipa 接口
        selectedRows: [], //选中经销商
        dialogTitle: '选择车辆',
        visibleAdd: false,
        visibleEdit:false,
        rowData:{}
      };
    },
    created() {
      this.chuqi();
    },
    methods: {
      //搜索数据
      topFilterInitFun() {
        return [
          { type: 'INPUT', label: '索赔单号', fieldName: 'claimNo', placeholder: '请输入', initialValue: '' },
          { type: 'INPUT', label: '维修工单号', fieldName: 'roNo', placeholder: '请输入', initialValue: '' },
          { type: 'SELECT', label: '索赔单状态', fieldName: 'claimStatus', placeholder: '请选择', initialValue: '', itemList: [] },
          { type: 'INPUT', label: '主损件名称', fieldName: 'partName', placeholder: '请输入', initialValue: '' },
          { type: 'INPUT', label: '主损件代码', fieldName: 'partCode', placeholder: '请输入', initialValue: '' },
          { type: 'SELECT', label: '索赔类型', fieldName: 'cmsClaimType', placeholder: '请选择', initialValue: '', itemList: [] },
          { type: 'INPUT', label: 'VIN', fieldName: 'vin', placeholder: '请输入', initialValue: '' },
          {
            type: 'INPUT',
            label: '车型',
            fieldName: 'modelCode',
            placeholder: '请输入',
            initialValue: '',
            unitRender: p => {
              return (
                <div>
                <multiuse-button icon="el-icon-search" onClick={() => this.chooseOrderNo()} />
              </div>
            );
            }
          },
          { type: 'RANGE_DATE', label: '提交日期', fieldName: 'beginSubmitAt|endSubmitAt', placeholder: '请输入', initialValue: [
              moment()
                .startOf('week')
                .format('YYYY-MM-DD HH:mm:ss'),
              moment()
                .endOf('week')
                .format('YYYY-MM-DD HH:mm:ss')
            ],
            rules: [{ required: true, message: '请选择日期', trigger: 'change' }]
          },

        ];
      },
      //搜索获取数据
      changeHandle(val) {
        if(!val.beginSubmitAt) {
          this.$notify.warning({ title: '提示信息', message: '提交开始日期不可为空！' });
          return
        }
        if(!val.endSubmitAt) {
          this.$notify.warning({ title: '提示信息', message: '提交结束日期不可为空！' });
          return
        }
        if(getAppId() == 'arcfox') {
          if (moment(moment(val.endSubmitAt).format('YYYY-MM-DD')).diff(moment(val.beginSubmitAt), 'months', true) > 12) {
            this.$notify.warning({ title: '提示信息', message: '提交日期跨度不可超过十二个月！' });
            return
          }
        } else {
          if (moment(moment(val.endSubmitAt).format('YYYY-MM-DD')).diff(moment(val.beginSubmitAt), 'months', true) > 12) {
            this.$notify.warning({ title: '提示信息', message: '提交日期跨度不可超过十二个月！' });
            return
          }
        }
        this.fetchParams = Object.assign({}, val,{
          claimStatus:55131003, xhrAbort: false
        });
        console.log(val);
      },
      //table表头和数据源
      creatHeader() {
        return [
          {
            title: '序号',
            dataIndex: 'index',
            width: 80,
            sorter: true,
            render: props => {
              return <span>{props.row.index + 1}</span>;
            }
          },
          { title: '索赔单状态', dataIndex: 'statusStr', sorter: true },
          { title: '索赔单号', dataIndex: 'claimNo', sorter: true },
          { title: '索赔类型', dataIndex: 'cmsClaimTypeStr', sorter: true },
          { title: '预授权单号', dataIndex: 'authNo', sorter: true },
          { title: '维修工单号', dataIndex: 'roNo', sorter: true },
          { title: 'VIN', dataIndex: 'vin', sorter: true },
          { title: '车牌号', dataIndex: 'licenseNo', sorter: true },
          { title: '车型名称', dataIndex: 'modelName', sorter: true },
          { title: '主损件代码', dataIndex: 'partCode', sorter: true },
          { title: '主损件名称', dataIndex: 'partName', sorter: true },
          //{ title: '供应商', dataIndex: 'supName', sorter: true },
          { title: '行驶里程', dataIndex: 'driveMile', sorter: true },
          { title: '故障现象代码', dataIndex: 'faultCode', sorter: true },
          { title: '故障现象名称', dataIndex: 'faultName', sorter: true },
          { title: '故障原因代码', dataIndex: 'frCode', sorter: true },
          { title: '故障原因名称', dataIndex: 'frName', sorter: true },
          { title: '驳回次数', dataIndex: 'channelNum', sorter: true },
          { title: '索赔金额', dataIndex: 'sumAmount', sorter: true },
          { title: '工时费', dataIndex: 'labourAmount', sorter: true },
          { title: '配件费', dataIndex: 'partAmount', sorter: true },
          { title: '附加费用', dataIndex: 'addAmount', sorter: true },
          { title: '保修起始日期', dataIndex: 'serviceBeginDate', sorter: true },
          { title: '保修截止日期', dataIndex: 'serviceEndDate', sorter: true },
          { title: '生产日期', dataIndex: 'prodDate', sorter: true },
          { title: '销售日期', dataIndex: 'saleDate', sorter: true },
          { title: '维修日期', dataIndex: 'repairBeginDate', sorter: true },
          { title: '申请时间', dataIndex: 'applyAt', sorter: true },
          { title: '申请人', dataIndex: 'ceratedBy', sorter: true },
          { title: '审核时间', dataIndex: 'checkAt', sorter: true },
          { title: '审核人', dataIndex: 'checkBy', sorter: true }
        ];
      },
      async chuqi(){
        console.log("进来了")
        const res1 = await getPartType( {type:5513});
        if (res1.resultCode == 200) {
          this.topFilterInit.find(x => x.fieldName == 'claimStatus').initialValue = '';
          this.topFilterInit.find(x => x.fieldName == 'claimStatus').itemList = res1.data.map(y => ({ text: y.codeCnDesc, value: y.codeId }));
        }
        const res2 = await getClaim();
        if (res2.resultCode == 200) {
          this.topFilterInit.find(x => x.fieldName == 'cmsClaimType').initialValue = '';
          this.topFilterInit.find(x => x.fieldName == 'cmsClaimType').itemList = res2.data.map(y => ({ text: y.name, value: y.code }));
        }
      },
      //选中
      selectChange(rows) {
        this.selectedRows = rows;
        console.log(this.selectedRows);
      },
      saveDialog() {
        this.$emit('save', this.selectedRows);
      },
      close() {
        this.visible = false;
      },
      chooseOrderNo() {
        this.visible = true;
      },
      save(obj) {
        this.topFilterInit.find(x => x.fieldName == 'modelCode').initialValue = obj[0].modelCode;
        this.visible = false;
      },
      //取消操作
      closeDialog() {
        this.$emit('close', { visible: false, data: this.selectedRows, type: 'close' });
      },
    }

    // mounted() {
    //   this.BaseTable = this.$refs.listModal.$refs.pageTable;
    // }
  };
</script>

<style lang="less" scoped></style>
